<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /*this4种方法
    * 1.函数调用时，this就是window
    * 2.对象的方法调用时，this就是对象
    * 3.构造函数调用时，this就是新创建的对象
    * 4.使用call调用函数时，this就是call后面的第一个参数
    *
    * */
    //举例1 函数调用时，this就是window
    var gender="男";
    function fun1() {
    console.log(this.gender);//this就是window
    }
    fun1();
    //举例2 对象的方法调用时，this就是对象
    var obj={
        name:"大楼",
        age:33,
        sayHello:function () {
        console.log(this.age);//this就是obj
        }
    };
    obj.sayHello();
    //举例3 构造函数调用时，this就是新创建的对象
    function Person(name,age) {
            this.name=name;//this就是per
            this.age=age;
            console.log(this.name);
    }
    var pre=new Person("牡丹花",2);
    //举例4 使用call调用时，this就是call后面的第一个参数
    var obj1={
        name:"玫瑰花",
        age:15,
        sayHello:function () {
        console.log(this.name);
        }
    };
    var obj2={
        name:"荷花",
        age:3,
        sayHello:function () {
            console.log(this.name);
        }
    };
    obj2.sayHello.call(obj1);
</script>
</body>
</html>